package Day_0131.JVM;

/**
 * @author zxc
 * @date 2023/01/31 16:10
 **/
public class fail_fast {
    public static void main(String[] args) {
        /**
         * 谈谈fail-fast机制
         * （1）fail-fast 机制是 Java 集合（Collection）中的一种错误机制。
         *  当多个线程对同一个集合的内容进行操作时，就可能会产生 fail-fast 事件。
         *
         * （2）案例 ：
         *  例如：
         * 当某一个线程 A 通过 iterator 去遍历某集合的过程中，若该集合的内容被其他线程所改变了，
         * 那么线程 A 访问集合时，就会抛出 ConcurrentModificationException 异常，产生 fail-fast 事件。
         * 这里的操作主要是指 add、remove 和 clear，对集合元素个数进行修改。
         *
         * 解决办法：
         * （1）建议使用“java.util.concurrent“包下的类”去取代“java.util 包下的类”。
         * 可以这么理解：
         * ===》
         * 在遍历之前，把 modCount 记下来 expectModCount，后面 expectModCount 去和 modCount 进行比较，
         * （类似于乐观锁,实际上是需要去）
         * 如果不相等了，证明已并发了，被修改了，于是抛出ConcurrentModificationException 异常。
         */
    }
}
